perm filename PUBMAC.DFS[XGP,TES] blob sn#027200 filedate 1973-02-22 generic text, type T, neo UTF8
00100	.!SPACES ← "#####################################################" ;
00200	.!HYPHENS ← "--------------------------------------------------------------" ;
00300	.MACRO FRACTION(NUM, DEN) ; ⊂
00400	.TURN ON "{↑↓[]&#" ;
00500	.	N ← "NUM" ; D ← "DEN" ;
00600	.	LN ← LENGTH(N) ; LD ← LENGTH(D) ;
00700	.	IF LN > LD THEN START D ← !SPACES[1 TO (LN-LD) DIV 2] & D ; LMAX ← LN END ;
00800	.	IF LD > LN THEN START N ← !SPACES[1 TO (LD-LN) DIV 2] & N ; LMAX ← LD END ;
00900	.	"↑[{N⎇]&↓[{D⎇]&[{(!HYPHENS[1 TO LMAX])⎇]" ; TURN OFF ; ⊃
01000	.MACRO SCRIPTS ⊂ TURN ON "↑↓[]&_∪" ⊃
01100	.MACRO GREEKS ⊂ TURN ON "{∂\αβ#←→∞" ⊃
01200	.MACRO FORMAT ⊂ SCRIPTS ; GREEKS ⊃
01300	.MACRO STANDARD FRONT(SECPRINT, SSPRINT, PAGEPRINT, INDEXCHAR, APPPRINT) ⊂
01400	.IF "SECPRINT" ≠ NULL THEN
01500	.	START
01600	.	COUNT SECTION PRINTING "SECPRINT"
01700	.	MACRO SEC(NAME) ⊂ SECNAME ← SSNAME ← NULL ;
01800	.	NEXT PAGE; NEXT SECTION;
01900	.		BEGIN
02000	.		FORMAT CENTER
02100	↓_SECTION {!⎇_↓
02200	.		SKIP
02300	↓_NAME_↓
02400	.		SKIP 3
02500	.		SECNAME ← "NAME"
02600	.		SEND CONTENTS ⊂ SKIP 1;
02700	{SECTION!⎇\ NAME{BREAK ⊃
02800	.		END	⊃
02900	.	END ;
03000	.IF "SSPRINT" ≠ NULL THEN
03100	.	START
03200	.	SUBBING ← "YES"
03300	.	COUNT SUBSECTION IN SECTION PRINTING "SSPRINT"
03400	.	MACRO SS(NAME) ⊂ SSNAME←"NAME"; IF LINES<7 THEN NEXT PAGE; NEXT SUBSECTION;
03500	.		START
03550	.		GREEKS
03600	.		FILL SKIP 2 
03700	.		SEND CONTENTS ⊂
03800	\\{SUBSECTION!⎇\NAME\∞ ∞.∞ → {PAGE!⎇
03900	. ⊃
04000	.		END
04100	{!⎇.  ↓_NAME_↓
04200	.		SKIP
04300	.		NOFILL  ; ⊃
04400	.	END
04500	.ELSE SUBBING ← "NO"
04600	.IF "PAGEPRINT" ≠ NULL THEN COUNT PAGE  PRINTING "PAGEPRINT"
04603	.IF "APPPRINT" ≠ NULL THEN
04606	.    START
04609	.    MACRO APP(NAME) ⊂ SECNAME←SSNAME←NULL
04612	.	NEXT PAGE;  NEXT SECTION;
04615	.	BEGIN
04618	.	FORMAT CENTER
04621	↓_APPENDIX {!⎇ _↓
04624	.	SKIP
04627	↓_NAME_↓
04630	.	SKIP 3
04633	.	SECNAME←"NAME"
04636	.	SEND CONTENTS ⊂ SKIP 1
04639	{SECTION!⎇\NAME{BREAK⊃
04642	.	END⊃
04645	.    END;
04700	.INDEXING ← IF "INDEXCHAR"=NULL THEN "*" ELSE "INDEXCHAR" ;
04800	.IF "INDEXCHAR" ≠ NULL THEN
04900	.	START
05000	.	AT INDEXING  PHRASE  INDEXING  ⊂
05100	.		"PHRASE" ; TURN ON "{"
05200	.		SEND INDEX ⊂
05300	<<{PAGE⎇#PHRASE#{  ⊃
05400	.			   TURN OFF	     ⊃
05500	.	END
05600	.ELSE INDEXING ← "NO"
05700	.INSERT CONTENTS
05800	.PORTION MAINPORTION
05900	.SECNAME ← SSNAME ← NULL
06000	.		⊃
06100	.
06200	.MACRO STANDARD BACK ⊂
06300	.SECTION! ← SUBSECTION! ← SECNAME ← SSNAME ← NULL
06350	.SECTION←SUBSECTION←0;
06400	.IF INDEXING ≠ "NO" THEN
06500	.	START
06600	.	PORTION INDEX
06700	.	UPWORD ← WASWORD ← WASLETT ← WASPG ← NULL ;
06800	.	AT "<<" PGNO "#" PHRASE "#" ⊂ UPWORD ← ↑"PHRASE";
06850	.					LETT ← UPWORD[1] ;
06900	.		IF LETT ≠ WASLETT THEN IF LINES<6 THEN NEXT PAGE ELSE SKIP 2 ;
07000	.		IF UPWORD ≠ WASWORD THEN START BREAK ⎇PHRASE  { END
07100	.		ELSE IF "PGNO" ≠ WASPG THEN ⎇, PGNO{ ;
07200	.		WASPG ← "PGNO" ; WASLETT ← LETT ; WASWORD ← UPWORD ; ⊃
07300	.	NOFILL FORMAT INDENT 0,0 PREFACE 0
07400	←INDEX
07500	.	SKIP 4
07600	.	SECNAME ← "INDEX"
07700	.	RECEIVE "##"
07800	.	SECNAME ← NULL
07900	.	END
08000	.PORTION CONTENTS
08010	.COUNT SECTION;
08020	.COUNT SUBSECTION IN SECTION;
08100	.COUNT PAGE PRINTING "i"
08200	.FILL NOJUST FORMAT CRBREAK
08300	.INDENT 0,30,10 PREFACE 1 TABS 8,13,23,30,33,36,39,42,45,48,51,54,57,60,63
08400	←↓_T A B L E   O F   C O N T E N T S_↓
08500	.SKIP 3
08600	.IF SUBBING THEN
08700	←SECTION→PAGE
08800	.SKIP 2
08900	.SECNAME ← "TABLE OF CONTENTS"
09000	.RECEIVE
09100	.		⊃